package arithmetic.other;

/**
 * @author zhangyanqi
 * @since 1.0 2018/3/20
 * <p>
 * 公园票价为5角。假设每位游客只持有两种币值的货币：5角、1元。
 * 再假设持有5角的有m人，持有1元的有n人。
 * 由于特殊情况，开始的时候，售票员没有零钱可找。
 * 我们想知道这m+n名游客以什么样的顺序购票则可以顺利完成购票过程。
 * 显然，m < n的时候，无论如何都不能完成；
 * m>=n的时候，有些情况也不行。比如，第一个购票的乘客就持有1元。
 * 请计算出这m+n名游客所有可能顺利完成购票的不同情况的组合数目。
 * 注意：只关心5角和1元交替出现的次序的不同排列，持有同样币值的两名游客交换位置并不算做一种新的情况来计数。
 */
public class 公园卖票 {

    /**
     * @param a 一元人数
     * @param b 五毛人数
     * @return 可能的情况
     */
    static int getWays(int a, int b) {
        if (a > b) {
            return 0;
        }
        if (a == 0) {
            return 1;
        }
        if (a == 1 && b == 1) {
            return 1;
        }
        return getWays(a - 1, b) + getWays(a, b - 1);
    }

    public static void main(String[] args) {
        int ways = getWays(3, 5);
        System.out.println(ways);

    }
}
